package com.xuelang.pipeline.artifact.domain.resource.repository;

import com.xuelang.pipeline.artifact.client.common.result.PageRecord;
import com.xuelang.pipeline.artifact.client.resource.dto.ArtifactUserQuery;
import com.xuelang.pipeline.artifact.domain.resource.ArtifactUser;

import java.util.List;

/**
 * 仓库用户仓库
 *
 * @author liuyuan.ly
 * @since 2024/5/14 9:48
 */
public interface ArtifactUserRepository {
    /**
     * 获取仓库用户列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param artifactUserQuery
     * @return
     */
    PageRecord<ArtifactUser> pageList(long currentPage, long pageSize, ArtifactUserQuery artifactUserQuery);
    /**
     * 获取仓库用户列表，有过滤条件
     *
     * @param artifactUserQuery
     * @return
     */
    List<ArtifactUser> list(ArtifactUserQuery artifactUserQuery);

    /**
     * 新增仓库用户
     *
     * @param artifactUser
     * @return
     */
    Boolean save(ArtifactUser artifactUser);

    /**
     * 更新仓库用户
     *
     * @param artifactUser
     * @return
     */
    Boolean update(ArtifactUser artifactUser);
    /**
     * 删除仓库用户
     *
     * @param id
     * @return
     */
    Boolean delete(String id);
    /**
     * 查询仓库用户
     *
     * @param id
     * @return
     */
    ArtifactUser query(String id);
    /**
     * 批量更新仓库用户
     *
     * @param list
     * @return
     */
    Boolean batchInsertArtifactUser(List<ArtifactUser> list);
    /**
     * 根据仓库uuid删除仓库用户
     *
     * @param artifactUuid
     * @return
     */
    Boolean deleteByArtifactUuid(String artifactUuid);
    /**
     * 根据业务用户id和仓库uuid查询仓库用户
     *
     * @param userId
     * @param artifactToolUuid
     * @return
     */
    ArtifactUser queryArtifactUser(String userId, String artifactToolUuid);
    /**
     * 根据业务用户id和仓库uuid查询仓库用户
     *
     * @param pushUser
     * @param artifactUuid
     * @return
     */
    ArtifactUser queryArtifactUserByArtifactUserIdAndToolUuid(String pushUser, String artifactUuid);
}
